// 通过 npm 安装 sdk：npm install cos-js-sdk-v5
// SECRETID 和 SECRETKEY 请登录 https://console.cloud.tencent.com/cam/capi 进行查看和管理
// 前端使用固定密钥计算签名，该格式适用于前端调试，若使用此格式，请避免泄露密钥
// 使用临时秘钥请参考文档：https://cloud.tencent.com/document/product/436/11459
import COS from 'cos-js-sdk-v5';

const cos = new COS({
  // getAuthorization 必选参数
  getAuthorization: function (options, callback) {
    debugger;
    // 初始化时不会调用，只有调用 cos 方法（例如 cos.putObject）时才会进入
    // 异步获取临时密钥
    // 服务端 JS 和 PHP 例子：https://github.com/tencentyun/cos-js-sdk-v5/blob/master/server/
    // 服务端其他语言参考 COS STS SDK ：https://github.com/tencentyun/qcloud-cos-sts-sdk
    // STS 详细文档指引看：https://cloud.tencent.com/document/product/436/14048
    const url = 'http://127.0.0.1:3000/sts'; // url 替换成您自己的后端服务
    const xhr = new XMLHttpRequest();
    xhr.open('GET', url, true);
    xhr.onload = function (e) {
      let data = null;
      let credentials = null;
      try {
        data = JSON.parse(e.target.responseText);
        credentials = data.credentials;
      } catch (e) {
      }
      if (!data || !credentials) {
        return console.error('credentials invalid:\n' + JSON.stringify(data, null, 2))
      }
      callback({
        TmpSecretId: credentials.tmpSecretId,
        TmpSecretKey: credentials.tmpSecretKey,
        SecurityToken: credentials.sessionToken,
        // 建议返回服务器时间作为签名的开始时间，避免用户浏览器本地时间偏差过大导致签名错误
        StartTime: data.startTime, // 时间戳，单位秒，如：1580000000
        ExpiredTime: data.expiredTime, // 时间戳，单位秒，如：1580000000
      });
    };
    xhr.send();
  }
});


export const multipartInit = function(){
  cos.multipartInit({
    Bucket: 'test-1253949275', // 必须
    Region: 'ap-guangzhou',     // 存储桶所在地域，必须字段
    Key: '1.jpg', // 存储在桶里的对象键（例如1.jpg，a/b/test.txt），必须字段
  }, function (err, data) {
      if (err) {
          // 处理请求出错
          console.log(err);
      } else {
          // 处理请求成功
          console.log(data);
      }
  });
} 

/**
 * 上传部分
 */
export const multipartUpload = function(){
  cos.multipartUpload({
    Bucket: 'test-1253949275', // 必须
    Region: 'ap-guangzhou',     // 存储桶所在地域，必须字段
    Key: 'exampleobject',       // 必须
    UploadId: 'exampleUploadId',
    PartNumber: '1',
    Body: fileObject
  }, function (err, data) {
    if (err) {
      // 处理请求出错
      console.log(err);
    } else {
      // 处理请求成功
      console.log(data);
    }
    if (data) {
      eTag = data.ETag;
    }
  });
}